package powerup;

import java.awt.event.KeyEvent;
import java.util.Date;
import javax.swing.JLabel;
import nivel.Casillero;
import nivel.Nivel;

/**
 * Clase que modela una Estrella
 * 
 * Ademas de tener un label y un casillero asociados, Estrella tambien tiene una
 * inteligencia artificial.
 * 
 * @author Agustin Orge (LU.85538)
 * @author Victoria Martinez de la Cruz (LU.87620)
 */

public class Estrella extends Dinamico {

	/**
	 * Constructor de Estrella
	 * 
	 * @param n
	 *            nivel con el cual Estrella esta en relacion
	 * @param ca
	 *            casillero actual
	 */
	public Estrella(Nivel n, Casillero ca) {
		super(n);
		casilleroActual = ca;
		label = new JLabel(nivel.getGrafica().getPanelEntidades().getIconos()
				.getEstrella());
		label.setSize(16, 16);
		label.setLocation(ca.getX(), ca.getY());
		control = nivel.getLogicaIA();
		movimiento = nivel.getMovimiento();

	}

	/**
	 * Mario agarra una Estrella Se hacen los cambios graficos pertinentes y se
	 * inicializa una cuenta atras de 15 segundos tras los cuales Mario volvera
	 * a un estado normal
	 */
	@Override
	public void agarrar() {
		setMarioEstrella();
		Date d = new Date();
		nivel.getMario().agarroEstrella(d.getTime());
		nivel.getDirectorPowerUps().eliminarPowerUp(
				this.getCasilleroActual().getCoordenada());
	}

	/**
	 * Metodo privado para establecer los valores graficos correspondientes de
	 * Mario Estrella
	 */
	private void setMarioEstrella() {

		if (nivel.getMario().cantPowerUps() == 0) {
			nivel.getMario().setIcono(
					nivel.getMario().getSkins().getSpriteMarioEstrella());
		} else {
			nivel.getMario().setIcono(
					nivel.getMario().getSkins().getSpriteSuperMarioEstrella());
		}

		int rumbo = nivel.getMario().getManejo().getLastKey();

		if (rumbo == KeyEvent.VK_LEFT) {
			nivel.getGrafica().getPanelMario().izquierda();
		} else {
			nivel.getGrafica().getPanelMario().derecha();
		}
	}

}
